import request from '@/utils/request'
import { getRefreshToken } from '@/utils/auth'
import service from '@/utils/request'
import log from "../views/infra/job/log";
import CryptoJS from 'crypto-js';

// 登录方法
export function login(username, hashedPassword, captchaVerification, socialType, socialCode, socialState) {
  const SECRET_KEY = CryptoJS.enc.Utf8.parse("a15q8f6s5s1a2v3s");
  const SECRET_IV = CryptoJS.enc.Utf8.parse("a3c6g5h4v9sss3v5");
      function encrypt(pwd) {
        let srcs = CryptoJS.enc.Utf8.parse(pwd);
        let encrypted = CryptoJS.AES.encrypt(srcs, SECRET_KEY, {
          iv: SECRET_IV ,
          mode: CryptoJS.mode.CBC,
          padding: CryptoJS.pad.ZeroPadding
        })
        return CryptoJS.enc.Base64.stringify(encrypted.ciphertext);
      }
  const password = encrypt(hashedPassword);
  const data = {
    username,
    password,//加密后密码
    captchaVerification,
    // 社交相关
    socialType,
    socialCode,
    socialState
  }
  return request({
    url: '/system/auth/login',
    method: 'post',
    data: data
  })
}

// 获取用户详细信息
export function getInfo() {
  return request({
    url: '/system/auth/get-permission-info',
    method: 'get'
  })
}

// 退出方法
export function logout() {
  return request({
    url: '/system/auth/logout',
    method: 'post'
  })
}

// 社交授权的跳转
export function socialAuthRedirect(type, redirectUri) {
  return request({
    url: '/system/auth/social-auth-redirect?type=' + type + '&redirectUri=' + redirectUri,
    method: 'get'
  })
}

// 社交快捷登录，使用 code 授权码
export function socialLogin(type, code, state) {
  return request({
    url: '/system/auth/social-login',
    method: 'post',
    data: {
      type,
      code,
      state
    }
  })
}

// 获取登录验证码
export function sendSmsCode(mobile, scene) {
  return request({
    url: '/system/auth/send-sms-code',
    method: 'post',
    data: {
      mobile,
      scene
    }
  })
}

// 短信验证码登录
export function smsLogin(mobile, code) {
  return request({
    url: '/system/auth/sms-login',
    method: 'post',
    data: {
      mobile,
      code
    }
  })
}

// 刷新访问令牌
export function refreshToken() {
  return service({
    url: '/system/auth/refresh-token?refreshToken=' + getRefreshToken(),
    method: 'post'
  })
}

// ========== OAUTH 2.0 相关 ==========

export function getAuthorize(clientId) {
  return request({
    url: '/system/oauth2/authorize?clientId=' + clientId,
    method: 'get'
  })
}
  // ========== 废弃 ==========
// export function authorize(responseType, clientId, redirectUri, state,
//   autoApprove, checkedScopes, uncheckedScopes) {
//   // 构建 scopes
//   const scopes = {}
//   for (const scope of checkedScopes) {
//     scopes[scope] = true
//   }
//   for (const scope of uncheckedScopes) {
//     scopes[scope] = false
//   }
//   // 发起请求
//   return service({

//     url: '/system/oauth2/authorize',
//     headers: {
//       'Content-type': 'application/x-www-form-urlencoded'
//     },
//     params: {
//       response_type: responseType,
//       client_id: clientId,
//       redirect_uri: redirectUri,
//       state: state,
//       auto_approve: autoApprove,
//       scope: JSON.stringify(scopes)
//     },
//     method: 'post'
//   })
// }

export function authorize(data) {
  return request({
    url: '/system/oauth2/authorize',
    headers: {
      'Content-type': 'application/x-www-form-urlencoded'
    },
    method: 'post',
    params: {
      response_type: data.response_type,
      client_id: data.client_id,
      redirect_uri: data.redirect_uri,
      state: data.state,
      auto_approve: data.auto_approve,
      scope:  data.scope
    },
  })
}

// 获取验证图片  以及token
export function reqGet(data) {
  return request({
    url: 'system/captcha/get',
    method: 'post',
    data
  })
}

// 滑动或者点选验证
export function reqCheck(data) {
  return request({
    url: '/system/captcha/check',
    method: 'post',
    data
  })
}
export function getclientImg(clientId) {
  return request({
    url: '/system/oauth2/get-client-by-client_id?clientId=' + clientId,
    method: 'get'
  })
}
export class socialBindLogin {
}
